package com.bt.dmdb.model;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.Table;
import javax.persistence.TableGenerator;
import org.hibernate.annotations.Type;
import org.joda.time.LocalDateTime;
import com.bt.dmdb.json.converter.JsonDateDeserializer;
import com.bt.dmdb.json.converter.JsonDateSerializer;
import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;

@Entity
@Table(name = "eag_member_status_copy")
@SuppressWarnings("serial")
public class MemberStatusCopy implements java.io.Serializable {
	private Long id;
	private String memberName;
	private String status;
	private LoginUser createdBy;	
	private LocalDateTime creationDate;	
	private CustomerCopy customerCopy;

	public MemberStatusCopy() {
	}

	public MemberStatusCopy(Long id, String memberName, String status,
			LoginUser createdBy, 
			LocalDateTime creationDate,
			CustomerCopy customerCopy) {
		super();
		this.id = id;
		this.memberName = memberName;
		this.status = status;
		this.createdBy = createdBy;
		
		this.creationDate = creationDate;
		
		this.customerCopy = customerCopy;
	}

	@Id
	@GeneratedValue(generator = "memberStatusIG", strategy = GenerationType.TABLE)
	@TableGenerator(name = "memberStatusIG", table = "jpa_sequences", pkColumnName = "name", pkColumnValue = "MemberStatus", allocationSize = 10, valueColumnName = "next_hi_value")
	@Column(name = "id")
	public Long getId() {
		return id;
	}

	@Column(name = "m_name")
	public String getMemberName() {
		return memberName;
	}

	@Column(name = "status")
	public String getStatus() {
		return status;
	}

	public void setId(Long id) {
		this.id = id;
	}

	public void setMemberName(String memberName) {
		this.memberName = memberName;
	}

	public void setStatus(String status) {
		this.status = status;
	}

	@ManyToOne(fetch = FetchType.LAZY)
	@JoinColumn(name = "created_by")
	public LoginUser getCreatedBy() {
		return createdBy;
	}

	public void setCreatedBy(LoginUser createdBy) {
		this.createdBy = createdBy;
	}

	

	@Column(name = "creation_date")
	@Type(type = "org.jadira.usertype.dateandtime.joda.PersistentLocalDateTime")
	@JsonSerialize(using = JsonDateSerializer.class)
	@JsonDeserialize(using = JsonDateDeserializer.class)
	public LocalDateTime getCreationDate() {
		return creationDate;
	}

	public void setCreationDate(LocalDateTime creationDate) {
		this.creationDate = creationDate;
	}

	
	@ManyToOne(fetch = FetchType.LAZY)
	@JoinColumn(name = "customer_copy_id")
	public CustomerCopy getCustomerCopy() {
		return customerCopy;
	}

	public void setCustomerCopy(CustomerCopy customerCopy) {
		this.customerCopy = customerCopy;
	}

}
